import re,csv,os
def FindDateOfBirth(filePath):
    # 尝试使用UTF-8编码打开文件  
    try:  
        with open(filePath, 'r', encoding='utf-8') as file:  
            return file.readlines()  
    except UnicodeDecodeError:  
        # 如果UTF-8编码打开文件失败，尝试使用GBK编码  
        try:  
            with open(filePath, 'r', encoding='gbk') as file:  
                return file.readlines()  
        except UnicodeDecodeError:  
            # 如果GBK也失败，抛出异常  
            raise ValueError(f"致命错误:文件既不是UTF-8编码也不是GBK编码!!!")  

# 初始化 设置正则表达式和文件路径
role=re.compile('出生日期:(\d{4}-\d{2}-\d{2}),')
filePath="身份证信息.csv"
output_path="出生日期.csv"
try:  
    lines = FindDateOfBirth(filePath)
    # 打开（或创建）文件并写入数据  
    with open(output_path, 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)  
        # 写入标题行
        writer.writerow({"出生日期"})  
        lineNum=0
        # 循环数据保存文件
        for line in lines:
            lineNum+=1 
            match=role.search(line)
            if(match):
                writer.writerow({match.group(1)})
            else:
                print(f"警告:第{lineNum}行没有找到预期的出生日期")
        # 获取当前工作目录  
        current_working_directory = os.getcwd()
        # 构建完全路径  
        full_path = os.path.join(current_working_directory, output_path) 
        print(f"成功!出生日期已转存至{full_path}")
# 处理报错
except FileNotFoundError as e:
    print("致命错误:未找到身份证信息文件")